Many graphic and video displays in use receive an input digital data stream (which may be a digitized analog data stream) that is used to modulate output light intensity, for example in LCD laptop computer displays, and desktop flat panel displays. Typically three channels of data are used to create the display: red, green, and blue primaries, from which a wide spectrum of visible light can be created. More specifically, the display is represented by pixels (picture elements), where each pixel is represented by three colors (red, blue, green), and each color has eight bits of information.
Thus, it is known that to represent images with photo-realistic quality requires at least eight bits of information per color per display pixel. But for reasons that include cost, many LCD displays are manufactured that can accept only fewer than eight bits per color, perhaps only six bits or even fewer bits.
Using fewer than eight bits per color creates an image artifact known as quantizing. This undesired effect is especially noticeable in display areas of gradual change in the image. Although a smooth transition in display output intensity should be presented, the quantized image instead exhibits large jumps in output intensity. The term “quantization error” will be used herein to refer to the difference between a display image represented with eight bits per color and a display image represented with fewer than eight bits per color.
It is known in the art to reduce visibility of the quantization error by storing the difference between eight bit per color pixel values and the quantized image pixel values, and by modifying the quantized image pixel values based on such pixel error. The goal, not always attained, is to create an error pattern that is less visibly noticeable to the human eye. This process of modifying the pixel values is commonly referred to as “dithering” the image.
Representing an image with fewer bits per pixel than the original source data began with development of algorithms intended to enable black and white line printers to make a reasonable representation of photographic and computer generated images. Understandably such printers could only display one bit per pixel, e.g., black or white. Prior art methods beginning with that published in 1976 by Floyd and Steinberg sought to disperse the error between the displayed (or printed) pixel value and the original pixel value to neighboring pixels. This was done by adding the accumulated error from previous pixels to the value of the current pixel before quantizing the current pixel. After quantization, a new error signal (the difference between what was displayed for that pixel and the original pixel value plus incoming error) was applied to the following pixels in a manner intended to make the viewable error less noticeable. How to propagate the accumulated error signal differentiate various dither algorithms from each other.
Typically the error was propagated in two dimensions, using a two-dimensional mask or filter function. In video systems images are displayed on a screen sequentially from left to right, and top to bottom. Thus, propagating the error occurs in the horizontal direction to the right (as the user views the screen) and in the vertical direction downward. Understandably this requires some memory to store a portion of the error signal for use on display lines following the current display line. The need to propagate a portion of the error signal in the vertical direction arises mainly from artifacts generated by the dither process.
Generally, if dither is applied in the horizontal direction only, and an image is displayed in which successive lines are similar, the dither artifact will repeat in the same location on every line. This type of artifact is easily noticeable to the human eye, and appears as an error in the displayed image.
What is needed then is a system and method for dithering image data that preferably requires less memory than existing dithering.
The present invention provides such a method and system for dithering.